package com.example.wordmanage;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Word文档处理器演示类
 * 展示如何使用WordSectionProcessor删除包含特定文本的节
 * 
 * @author Generated
 * @version 1.0
 */
public class WordProcessorDemo {
    
    private static final Logger logger = LoggerFactory.getLogger(WordProcessorDemo.class);
    
    public static void main(String[] args) {
        // 处理指定的Word文档
        processSpecificDocument();
    }

    /**
     * 处理指定的Word文档：src\main\resources\doc\test01.docx
     * 删除包含"本节要删除"文本的节，输出格式为"output_YYYYMMDD_HHMMSS.docx"
     */
    private static void processSpecificDocument() {
        logger.info("=== 处理指定Word文档 ===");

        // 指定的输入文件路径
        String inputFile = "src\\main\\resources\\doc\\test01.docx";

        // 输出目录（与输入文件相同目录）
        String outputDirectory = "src\\main\\resources\\doc";

        // 输出文件前缀（按要求使用"output"）
        String outputFilePrefix = "output";

        logger.info("输入文件: {}", inputFile);
        logger.info("输出目录: {}", outputDirectory);
        logger.info("输出文件前缀: {}", outputFilePrefix);

        WordSectionProcessor processor = new WordSectionProcessor();

        try {
            // 检查输入文件是否存在
            if (!WordDocumentUtils.isValidWordDocument(inputFile)) {
                logger.error("输入文件不存在或无效: {}", inputFile);
                return;
            }

            logger.info("开始处理Word文档...");

            // 处理文档，使用自定义输出目录和文件名前缀
            String outputFile = processor.deleteSectionsWithText(inputFile, outputDirectory, outputFilePrefix);

            logger.info("=== 处理完成 ===");
            logger.info("输入文件: {}", inputFile);
            logger.info("输出文件: {}", outputFile);

            // 显示文件大小信息
            WordDocumentUtils.logFileSizeComparison(inputFile, outputFile);

        } catch (WordProcessingException e) {
            logger.error("处理Word文档时发生错误: {}", e.getMessage(), e);
        } catch (Exception e) {
            logger.error("处理过程中发生未知错误: {}", e.getMessage(), e);
        }
    }



    
    /**
     * 创建测试用的Word文档示例
     * 注意：这个方法仅用于演示，实际使用时需要手动创建包含"本节要删除"文本的Word文档
     */
    public static void createSampleDocument() {
        logger.info("=== 创建示例文档说明 ===");
        logger.info("请手动创建一个名为 'test.docx' 的Word文档，包含以下内容：");
        logger.info("1. 第一节：正常内容，不包含删除标记");
        logger.info("2. 第二节：包含文本'本节要删除'的内容");
        logger.info("3. 第三节：正常内容，不包含删除标记");
        logger.info("4. 在节之间插入分节符（页面布局 -> 分隔符 -> 分节符）");
        logger.info("处理后，第二节应该被删除，只保留第一节和第三节的内容。");
    }
}
